#ifndef GAME_H_INCLUDED 
#define GAME_H_INCLUDED 

#include "Singleton.h"
#include "GameObject.h"
#include <vector>
class GameState;


class Game : public Uncopyable
{
private:
	Game(); 
	friend class Singleton<Game>;
public:
	void Run();

	void Draw();
	void Update();
	void DrawGameObjects();
	void UpdateGameObjects();

	void SetGameState(GameState* theGameState);
	 
	void AddGameObject(int id, GameObject* g);
	void DeleteGameObject(int id);
	void SafelyDeleteGameObjects();
	GameObjectsMap* GetGameObjects();
		

private:
	GameState* m_pGameState;
	GameObjectsMap m_objects;
	std::vector<int> m_objectsToDelete;
	//CollisionSystem* m_pCollisionSystem;

	bool m_appPaused;
	
};

typedef Singleton<Game> TheGame;

#endif